package ai.people.platform.system.service;

import ai.people.netmon.framework.domain.system.entity.NmSystemMenu;
import ai.people.netmon.framework.domain.system.vo.NmSystemMenuVO;

import java.util.List;

/**
 * 系统菜单服务
 *
 * @author yuanqinglong
 * @date 2022/3/4 15:50
 */
public interface SystemMenuService {


    /**
     * 通过用户id查询菜单
     *
     * @param userId 用户id
     * @return {@link List}<{@link NmSystemMenuVO}>
     */
    List<NmSystemMenuVO> listMenuTree(Long userId);


    /**
     * 用户菜单列表
     *
     * @param userId 用户id
     * @return {@link List}<{@link NmSystemMenu}>
     */
    List<NmSystemMenu> listUserMenus(Long userId);


    /**
     * 添加菜单
     *
     * @param nmSystemMenu 纳米系统菜单
     */
    void addMenu(NmSystemMenu nmSystemMenu);


    /**
     * 删除菜单
     *
     * @param menuId 菜单id
     */
    void deleteMenu(Long menuId);


    /**
     * 更新菜单
     *
     * @param nmSystemMenu 纳米系统菜单
     */
    void updateMenu(NmSystemMenu nmSystemMenu);


    /**
     * 通过id获取菜单
     *
     * @param menuId 菜单id
     * @return {@link NmSystemMenu}
     */
    NmSystemMenu getMenuById(Long menuId);


    /**
     * 通过id批量查询菜单
     *
     * @param menuIds 菜单id
     * @return {@link List}<{@link Long}>
     */
    List<NmSystemMenu> listMenuInIds(List<Long> menuIds);


    /**
     * 获取所有菜单
     *
     * @return {@link List}<{@link NmSystemMenuVO}>
     */
    List<NmSystemMenuVO> treeAll();

}
